我的程序应该读取用户ID和密码。如何让它在整个过程中发挥作用。
答案 0 :(得分:2)
1)阅读execl()函数。此功能不返回。当验证程序结束时,孩子将退出。因此你的write()调用永远不会发生。
2)您似乎在源代码上调用execl()。您需要将源代码编译成可执行程序才能以这种方式运行它。检查execl()是否像这样失败:
execl("/bin/bash", "bash", "-c", "echo hello", NULL); // Only returns if execl fails
perror("execl failed");
exit(1); // Make sure child exits if execl fails
3)在调用fork之后,你应该为孩子检查(pid == 0)。你错误地测试了(pid),对于不是孩子的父母来说这是正确的。
4)write()调用应该由父节点进行,而不是由子节点进行。在孩子执行后,它将成为验证程序,永远不会返回到您的代码。
这是一个开始。祝你好运!