Search code examples
cexecl

execl in C programming


I have a C program. I noticed that you can't put 2 execl's in it.

The code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>

int main()

{
      pid_t fork(void);

      int system(const char *command);

      execl("/bin/sh", "sh", "-c", "kdialog --warningcontinuecancel 
      \"Make sure to include: \n \n 1. py_lcd folder \n 2. 4x20 
      Raspberry Pi LCD Display \n 3. Python 2.7.12 to be installed \n 
      \n If you are missing something, kill the program process and 
      get them.\"", (char *) 0);

      sleep(1);

      execl("/bin/sh", "sh", "-c", "kdialog --msgbox \"Setting up files...\" --title \"Installing...\"", (char *) 0);
      return(0);
}

Can someone help me if there is a way to bypass this or if i am making a mistake???


Solution

  • The exec family of functions don't return when they succeed. They replace the running process with the one being execed. If you want to run a program in a child process (with full control, unlike system), you need to use fork + exec + wait (or perhaps posix_spawn).