При компиляции через g++ 5.4.0 этого кода получаю вывод, из которого могу судить, что execve попросту не срабатывает. Подскажите, пожалуйста, почему?
Исходный код:
#include <iostream>
#include <unistd.h>
#include <sys/wait.h>
#include <cstring>
int main(int argc, char** argv)
{
if (argc > 1)
{
for(int i = 0; i < argc; i++)
{
std::cout << argv[i] << std::endl;
}
return 0;
}
pid_t pid = fork();
if (pid < 0)
{
std::cout << "Error creating process" << std::endl;
}
else if (pid == 0)
{
//child
std::cout << "Hello from Child" << std::endl;
char** params = new char*[5];
for (int i = 0; i < 3; i++)
{
params[0] = new char[10];
}
strcpy(params[0], "1st");
strcpy(params[1], "2nd");
strcpy(params[2], "3rd");
params[3] = nullptr;
execve("test", params, nullptr);
return 0;
}
else
{
//parent
waitpid(pid, nullptr, 0);
std::cout << "Hello from parent" << std::endl;
}
std::cin.get();
return 0;
}
Сам вывод:
Hello from Child
Hello from parent
P.S. Компилировал с параметром -std=c++11
Исправьте-ка код
for (int i = 0; i < 3; i++)
{
params[0] = new char[10];
}
Зачем присваивать указатель одной и той же переменной params[0]
целых три раза?...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Дана функция на 200 строк, обрабатывающая большое количество данных, принимающая много параметровПутём неимоверных усилий функция была порезана...
Есть матрица смежности a[n * m][n * m]Есть первая вершина v0 Есть число k
Я написал программу,которая работает с текстовым файлом и должна отправить его по emailДля отправки по email использовал curl