Go Back   UNIX og Linux Forums > Top Forums > Programmering
.
Google Site



Programmering Post spørsmål om C, C + +, Java, SQL og andre programmeringsspråk her.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 11-12-2003
Registrert bruker
 

Bli Dato: november 2003
Innlegg: 3
Forskjellen på Linux og Solaris


Code:
/*
 * one-way-pipe.c  - example of using a pipe to communicate data between a
 *                   process and its child process. The parent reads input
 *                   from the user, and sends it to the child via a pipe.
 *                   The child prints the received data to the screen.
 */

#include <stdio.h>    /* standard I/O routines.                */
#include <unistd.h>   /* defines pipe(), amongst other things. */

/* this routine handles the work of the child process. */
void do_child(int data_pipe[]) {
    int c;	/* data received from the parent. */
    int rc;	/* return status of read().       */

    /* first, close the un-needed write-part of the pipe. */
    close(data_pipe[1]);

    /* now enter a loop of reading data from the pipe, and printing it */
    while ((rc = read(data_pipe[0], &c, 1)) > 0) {
	putchar(c);
    }

    /* probably pipe was broken, or got EOF via the pipe. */
    exit(0);
}

/* this routine handles the work of the parent process. */
void do_parent(int data_pipe[])
{
    int c;	/* data received from the user. */
    int rc;	/* return status of getchar().  */

    /* first, close the un-needed read-part of the pipe. */
    close(data_pipe[0]);

    /* now enter a loop of read user input, and writing it to the pipe. */
    while ((c = getchar()) > 0) {
	/* write the character to the pipe. */
        rc = write(data_pipe[1], &c, 1);
	if (rc == -1) { /* write failed - notify the user and exit */
	    perror("Parent: write");
	    close(data_pipe[1]);
	    exit(1);
        }
    }

    /* probably got EOF from the user. */
    close(data_pipe[1]); /* close the pipe, to let the child know we're done. */
    exit(0);
}

/* and the main function. */
int main(int argc, char* argv[])
{
    int data_pipe[2]; /* an array to store the file descriptors of the pipe. */
    int pid;       /* pid of child process, or 0, as returned via fork.    */
    int rc;        /* stores return values of various routines.            */

    /* first, create a pipe. */
    rc = pipe(data_pipe);
    if (rc == -1) {
	perror("pipe");
	exit(1);
    }

    /* now fork off a child process, and set their handling routines. */
    pid = fork();

    switch (pid) {
	case -1:	/* fork failed. */
	    perror("fork");
	    exit(1);
	case 0:		/* inside child process.  */
	    do_child(data_pipe);
	    /* NOT REACHED */
	default:	/* inside parent process. */
	    do_parent(data_pipe);
	    /* NOT REACHED */
    }

    return 0;	/* NOT REACHED */
}

Vet noen hvorfor det bare fungerer på Linux, men ikke Solaris? JEG virkelig vil gjerne vite årsaken så snart som mulig. Takk.

Sist endret av Perderabo; 11-12-2003 på 12:11..
Sponsede lenker
  #2 (permalink)  
Old 11-12-2003
Perderabo's Avatar
Unix Daemon
 

Bli Dato: Aug 2001
Beliggenhet: Ashburn, Virginia
Innlegg: 9150
Det er ikke Linux vers Solaris, er det Intel x86 vers Sparc. Din programmet vil fungere på en Intel x86 kjører Solaris. Intel x86 er lite endian mens Sparc er big endian.

Kode som dette:

int c;
read (data_pipe [0], & c, 1);

er søppel. Ta en titt på man-sidene for å lese og skrive.
Sponsede lenker
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er Av


Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Differansen mellom Solaris 9 og 10 rjay.com Solaris 3 04-08-2008 09:52
Forskjellen mellom AIX boksen og Sun Solaris-boksen nisha4680 UNIX for Dummies Spørsmål og svar 1 08-13-2006 12:10
Forskjellen mellom Sun Solaris og Linux? raz UNIX for Dummies Spørsmål og svar 3 10-04-2004 11:15
Hva er forskjellen: SunOS / Solaris Version. mester UNIX for Dummies Spørsmål og svar 2 10-18-2002 05:50
Hva er forskjellen på Unix, Linux og Solaris? ITmommy UNIX for Dummies Spørsmål og svar 2 06-01-2001 01:11



Alle klokkeslett er GMT -4. Nå er klokken 10:16.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2010. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0