[lkml]   [2006]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [OT] 'volatile' in userspace
    On Mon, Jul 10, 2006 at 10:00:37AM -0700, Joshua Hudson wrote:
    > Yes, I use vfork. So far, the only way I have found for the parent to
    > know whether or not the child's exec() failed is this way:

    What I do in UML is make a pipe between the parent and child, set it
    CLOEXEC, and write a byte down it if the exec fails.

    The parent reads it - if it gets no bytes, the exec succeeded, if it
    gets one byte, it failed.

    child -
    execvp(argv[0], argv);
    errval = errno;
    write(data->fd, &errval, sizeof(errval));

    parent -
    socketpair(AF_UNIX, SOCK_STREAM, 0, fds);
    fcntl(fds[1], F_SETFD, flag);
    pid = clone(child, NULL, SIGCHLD, NULL);
    if(pid < 0){


    /* Read the errno value from the child, if the exec failed, or get 0 if
    * the exec succeeded because the pipe fd was set as close-on-exec.
    n = read(fds[0], &ret, sizeof(ret));
    if (n < 0) {
    } else if(n != 0){
    /* exec failed */
    } else {
    /* exec succeeded */

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2006-07-10 20:57    [W:0.020 / U:0.268 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site