【问题标题】:Creating a Linux process in C++在 C++ 中创建 Linux 进程
【发布时间】:2015-12-24 22:39:02
【问题描述】:

所以,我需要用 fork 在 linux 中创建一个进程。 子进程需要运行排序程序,并将“1”传递给它。 这是我正在尝试制作的代码:

int main(){
  cout<<"Master #process: "<<getpid()<<"#parent process:"<<getppid()<<endl;
  char* cmd[2];
  cmd[0]="./Sort";
  cmd[1]="1";
  pid_t child_id=fork();

  if(child_id==0){
    execv(cmd[0],cmd);
  }
    cout<<child_id<<endl;

但是,当我尝试在 linux 控制台中运行它时,它只显示第一个字符串并且不运行排序。

【问题讨论】:

  • 也许您想在退出父进程之前等待进程完成?
  • 您的工作目录中是否有一个名为“Sort”(大写“S”)的可执行文件?

标签: c++ linux process fork


【解决方案1】:

因为在 C++ 中,没有办法标记数组的大小,除了终止符,你需要用 NULL 来终止你的数组。

char* cmd[3];
cmd[0]="./Sort";
cmd[1]="1";
cmd[2]=NULL;

【讨论】:

  • 我的猜测是这不会完全解决问题,因为仍然没有什么可以确保主进程等待排序完成。
  • @Mats Petersson,除非意图是守护进程。
  • 据我所知,普通sort 内部没有创建守护进程的代码,并且上面的代码不会执行您所期望的相关输入/输出关闭案例。
猜你喜欢
  • 2017-10-12
  • 2018-10-27
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 2011-08-18
  • 2013-07-31
  • 2015-07-23
相关资源
最近更新 更多