【问题标题】:C++: How to pass arguments to an executable?C++:如何将参数传递给可执行文件?
【发布时间】:2015-03-31 01:23:50
【问题描述】:

我有 2 个程序(可执行文件)客户端和服务器。客户端从用户那里捕获 2 个整数,并将它们传输到服务器。服务器进行计算并返回给客户端。

但我不知道如何将参数从客户端传递到服务器。

    #include <cstdlib>
    #include <iostream>
    #include <unistd.h>
    #include <sys/types.h>

    using namespace std;

    int main(int argc, const char* argv[]){

        argv[0] = "server"; // the Server program, located in the same directory

        int int1, int2;
        char operator1;

        //data entry
        cout << "Please enter 2 integers" << endl;
        cin >> int1 >> int2;
        cout << "Please enter a character, either a + or a -" << endl;
        cin >> operator1;

        int PID = fork(); // creating a child process

        while (operator1 == '+' || operator1 =='-') { 
            if (PID == 0){
                execl(arg[0], "server", NULL); // child process (server code).
//How to pass the items to this program?
                _exit(EXIT_FAILURE);
            }
            else if (PID < 0){
                perror("execution failed\n");
                exit(EXIT_FAILURE);
            }
        // re-enter data
        cout << "Please enter 2 integers" << endl;
        cin >> int1 >> int2;
        cout << "Please enter a character, either a + or a -" << endl;
        cin >> operator1;
        }
        return 0;
    }

【问题讨论】:

标签: c++ linux system-calls


【解决方案1】:

参数作为附加的char * 参数传递给execl()。

将您的参数转换为char 字符串,然后将它们作为附加参数传递给execl()。

或者使用其他几个替代版本的exec(),比如execvp(),如果他们使用的替代参数传递约定对你来说更方便的话。

【讨论】:

  • 是这样的:const char int1, int2, operator1; 然后execl(argv[0], int1, int2, operator1, NULL); ?
  • 没有。 execl() 接受 char * 参数,指向以 null 结尾的字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 2010-09-12
  • 1970-01-01
  • 2016-04-24
  • 2012-05-05
  • 2010-10-02
相关资源
最近更新 更多