使用 posix_spawn 启动进程
Starting a process using posix_spawn
我正在使用以下代码在 Linux 中启动新进程
pid_t processID;
char *argV[] = {"192.168.1.40",(char *) 0};
int status = -1;
status = posix_spawn(&processID,"/home/user/application",NULL,NULL,argV,environ);
if(status == 0)
std::cout<<"Launched Application";
else
std::cout<<"Launching application Failed";
应用程序确实启动,但显示没有命令行参数。posix_spawn参数中的错误是什么?
从posix_spawn
手册页:
参数 argv 是一个指针,指向以 null 结尾的字符指针数组,这些数组指向以 null 结尾的字符串。 这些字符串构造要提供给新进程的参数列表。 数组中至少必须存在 argv[0],并且应该包含正在生成的程序的文件名,例如 path 或 file 参数的最后一个组件。
正在发生的事情是,在启动过程中,argv[0]
将被192.168.1.40
而不是可执行文件的名称,并且之后程序没有参数。
所以改变:
char *argV[] = {"192.168.1.40",(char *) 0};
自:
char *argV[] = {"/home/user/application", "192.168.1.40",(char *) 0};
argv 数组的行为将在后面更明确地提到:
当程序作为 posix_spawn() 或 posix_spawnp() 调用的结果执行时,将按如下方式输入:
main(argc, argv, envp)
int argc;
char **argv, **envp;
其中 argc 是 argv 中的元素数("arg 计数"),argv 指向指向参数本身的字符指针数组。
相关文章:
- 在挂钩启动新线程时解除挂钩进程
- 如何制作启动 Python 脚本的 linux 后台进程(在 c 中)
- 由 JOB 中的进程启动的子进程是否可以将 JOB 属性设置为脱离作业?
- 通过服务启动进程后,从SHGetKnownFolderPath 0x80070005错误
- 如何在启动时将 gdbserver 附加到进程?
- 在C++中启动进程时隐藏命令提示符
- 如何正确启动进程并转发 stdin/stdout/stderr
- 以不同用户身份启动进程
- 使用 posix_spawn 启动进程
- 当java作为服务运行时,从java启动进程
- 当用std::system启动进程时,我可以指定一个工作目录吗
- 在窗口错误中使用QProcess启动进程:"Timers can only be used with threads started with QThread"
- 创建进程 我无法启动进程
- Windows 7或Windows 2008如何在本地系统帐户或系统上下文中启动进程(从桌面应用程序)
- 在派生的线程中启动进程
- Windows服务启动进程结束通知(20032008)
- 无法使用参数启动进程
- 提示重新启动进程以获得管理权限
- 如何在 C、C++ 的 Linux 操作系统上启动进程
- 在linux上用c++启动进程,使用环境变量c++