我正在尝试创建一个简单的客户端/服务器程序,该程序允许客户端使用 TCP 套接字连接到服务器,然后允许用户从客户端向服务器端发出系统调用并将回复返回给用户。例如:
客户端问题:ls
服务器将在 /usr/bin 或 w/e 中找到 ls,然后使用 execve() 执行它
我还会有一些喜欢 lls 或 lmkdir 等的东西。它将在客户端发出系统调用。
问题是我的 execve() 似乎没有正确运行,因为实际上没有调用“ls”或任何其他命令。我之前只使用本地端(没有服务器或任何东西)完成了同样的程序,并且 execve() 工作正常。这是一些代码:
pid = fork();
if(pid){ // Child
printf("child wait");
pid = wait(&status);
printf("Child dead\n");
}else{ // Parent
if(execPath){
execve(execPath, arglist, env);
printf("Command Complete\n");
}
}
由于某种原因,PID 语句的子部分中的 printfs 根本没有执行。我不认为系统实际上会分叉一个进程。由于它是客户端/服务器类型的程序,我是否需要做一些特别的事情才能完成这项工作,还是应该完全一样?
谢谢