问题描述
我在 linux 机器的 /usr/bin 路径中有一个基于 GUI 的可执行文件 这个可执行文件需要三个参数 - 两个整数值和一个字符
你能告诉我如何从用户空间 C++ 程序调用和运行这个可执行文件
解决方法
不要无故不回答这个问题
df = pd.DataFrame({'date':[datetime.date(2021,3,3),datetime.date(2021,4)],'player':['a','b'],'score':[10,9]})
print(type(df['date'][0]))
<class 'datetime.date'>
df = df.set_index('date')
print(type(df.index.get_level_values('date')[0]))
<class 'datetime.date'>
df = df.reset_index()
print(type(df['date'][0]))
<class 'datetime.date'>
df = df.set_index(['date','player'])
print(type(df.index.get_level_values('date')[0]))
<class 'pandas.tslib.Timestamp'>
df = df.reset_index()
print(type(df['date'][0]))
<class 'pandas.tslib.Timestamp'>
将参数构建为字符串,fork 并执行它。真的很琐碎。不要忘记pid_t runprocess(int arg1,int arg2,char arg3)
{
static const char program[] = "/usr/bin/...";
char arg1c[12];
char arg2c[12];
char arg3c[2];
sprintf(arg1c,"%d",arg1);
sprintf(arg2c,arg2);
arg3c[0] = arg3;
arg3c[1] = 0;
pid_t pid = vfork();
if (pid == 0) {
signal(SIGHUP,SIG_IGN); /* since it's a GUI program,detach from console HUP */
close(0); /* and detach from stdin */
if (open("/dev/null",O_RDWR)) _exit(137); /* assertion failure */
execl(program,program,arg1c,arg2c,arg3c,NULL);
_exit(errno);
}
return pid;
}
。
由于子进程是一个 GUI 进程,我们将 HUP 与我们可能正在运行或可能未运行的终端分离,并用 wait()
替换 stdin。