The XSetCommand
function sets the command and arguments used to invoke the application.
(Typically, argv is the argv array of your main program.) If the strings
are not in the Host Portable Character Encoding, the result is implementation-dependent.

XSetCommand can generate BadAlloc and BadWindow errors.

The XGetCommand
function reads the WM_COMMAND property from the specified window and
returns a string list. If the WM_COMMAND property exists, it is of type
STRING and format 8. If sufficient memory can be allocated to contain the
string list, XGetCommand fills in the argv_return and argc_return arguments
and returns a nonzero status. Otherwise, it returns a zero status. If the
data returned by the server is in the Latin Portable Character Encoding,
then the returned strings are in the Host Portable Character Encoding. Otherwise,
the result is implementation-dependent. To free the memory allocated to the
string list, use XFreeStringList.