Porting to Linux?

This is a discussion on Porting to Linux? within the C Programming forums, part of the General Programming Boards category; Hi, I'm porting an ancient C program to Linux and I have 2 versions of this function, one for BSD ...

  1. #1
    and the hat of sweating
    Join Date
    Aug 2007
    Location
    Toronto, ON
    Posts
    3,545

    Porting to Linux?

    Hi,
    I'm porting an ancient C program to Linux and I have 2 versions of this function, one for BSD and one for SYS V.
    I'm not sure if either is appropriate for Linux, but the only real difference is the call to wait() (the SYS V version uses 'union wait status' instead of 'int status'). Here's the BSD version:
    Code:
    	int
    	spawnvp( mode, path, argv )
    		int mode;
    		char *path;
    		char *argv[];
    	{
    		int pid;
    		int status;
    
    		fflush( stdout );
    		fflush( stderr );
    		signal(SIGCHLD, SIG_DFL);
    
    		switch ( pid = fork() ) {
    		case -1:	/* error  */
    			return -1;
    		case 0:		/* child  */
    			exit( execvp( path, argv ) );
    		default:	/* parent */
    			while ( wait( &status ) != pid )
    				;
    			return status ? -1 : 0;
    		}
    	}
    I can't see any reason why this wouldn't work fine on Linux, but then again, I never use those fork(), execvp(), signal()... functions.
    Will this work as expected (which of course is undocumented, so I can only guess)?

  2. #2
    Kernel hacker
    Join Date
    Jul 2007
    Location
    Farncombe, Surrey, England
    Posts
    15,677
    Looks ok from a brief view - have you tried to compile it? [Not that will guarantee that it works right, but it's a good start if it compiles - there's a chance then...]

    --
    Mats
    Compilers can produce warnings - make the compiler programmers happy: Use them!
    Please don't PM me for help - and no, I don't do help over instant messengers.

  3. #3
    Captain Crash brewbuck's Avatar
    Join Date
    Mar 2007
    Location
    Portland, OR
    Posts
    7,273
    Look fine to me. You might consider eliminating the while-loop around the call to wait() by calling waitpid() instead, but it's no big deal and using wait() is more primitive and therefore more portable.

  4. #4
    and the hat of sweating
    Join Date
    Aug 2007
    Location
    Toronto, ON
    Posts
    3,545
    Thanks. I guess I'll just use it like that and see how it goes.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. pthread and socket porting from Linux to Windows
    By mynickmynick in forum C Programming
    Replies: 2
    Last Post: 07-18-2008, 07:57 AM
  2. Porting from VC6 to Linux Fedora core 5
    By g4j31a5 in forum C++ Programming
    Replies: 17
    Last Post: 08-08-2006, 02:59 AM
  3. wxWidgets, porting from Linux to PDA
    By BobS0327 in forum Tech Board
    Replies: 0
    Last Post: 05-16-2006, 09:25 AM
  4. Replies: 1
    Last Post: 10-18-2005, 11:20 AM
  5. Porting the NES emulator from DOS to Linux
    By billholm in forum Game Programming
    Replies: 14
    Last Post: 08-03-2002, 02:48 AM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21