Portable mknod ?? does it exist?
Darrell Schiebel
drs at cerc.wvu.wvnet.edu
Sat Jul 29 04:39:22 AEST 1989
I have been attempting to write software utilizing named pipes on
several hardware platforms. The same code seems to behave differently
on each different platform.
Sun (SunOS Release 4.0):
mknod works fine
read blocks
Silicon Graphics (Iris 4D1-3.1D IP6):
mknod works fine
read does not block
DEC (Ultrix-32 V3.0):
mknod works fine
open fails with error "No such device or address" (ERRNO: 6)
HP (HP-UX):
mknod fails with error "Invalid argument" (ERRNO: 22)
Does anyone have any suggestions on how to make this portable ?
Or an alternative to named pipes which is portable?
Here is the code snippet:
#include <errno.h>
#ifdef ULTRIX
#include <fcntl.h>
#else
#include <sys/fcntl.h>
#endif
#define FIFONAME "myfifo"
#define PERMS 0000666
#define FIFO 0010000 /* = S_IFIFO */
main(){
char buffer[200];
int pipe;
if (mknod(FIFONAME, FIFO | PERMS, 0) == -1) {
printf("ERRNO: %d\n",errno);
perror("writer: mknod failed");
exit(1);}
else printf("myfifo created\n");
if ((pipe = open(FIFONAME,O_RDWR)) == -1){
printf("ERRNO: %d\n",errno);
perror("Open Failed");
exit(1);}
if (read(pipe, buffer, 20)< 0){
printf("ERRNO: %d\n",errno);
perror("Read Failed");}}
Any Responses Would be Appreciated.
Darrell Schiebel
--------------------------------------
Concurrent Engineering Research Center
West Virginia University
drs at cerc.wvu.wvnet.edu
drs at g.cs.wvu.wvnet.edu
drs at baks.com
More information about the Comp.unix.wizards
mailing list