diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/ipcparent_8c-source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/ipcparent_8c-source.html Tue Mar 30 11:56:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,142 +0,0 @@ - -
-00001 // ipcparent.c -00002 // -00003 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). -00004 // All rights reserved. -00005 // This component and the accompanying materials are made available -00006 // under the terms of "Eclipse Public License v1.0" -00007 // which accompanies this distribution, and is available -00008 // at the URL "http://www.eclipse.org/legal/epl-v10.html". -00009 // -00010 // Initial Contributors: -00011 // Nokia Corporation - initial contribution. -00012 // -00013 // Contributors: -00014 // -00015 // Description: -00016 // -00017 -00018 // -00019 -00020 #include <stdio.h> -00021 #include <fcntl.h> -00022 #include <unistd.h> -00023 #include <stdlib.h> -00024 #include <sys/stat.h> -00025 #include <errno.h> -00026 #include <spawn.h> -00027 #include <string.h> -00028 #include <sys/wait.h> -00029 -00034 char PressKey() -00035 { -00036 char ch; -00037 fflush(stdout); -00038 ch=getchar(); -00039 return ch; -00040 } -00041 -00047 int Error(char msg[]) -00048 { -00050 printf("%s [Error NUMBER = %d]\n",msg,errno); -00051 PressKey(); -00052 return EXIT_FAILURE; -00053 } -00054 -00055 int main() -00056 { -00058 FILE* childProcessStream; -00060 char fifoFileName[] = "myfifofile"; -00062 char fifoExecFileName[] = "z:\\sys\\bin\\fifochild"; -00064 char popenExecFileName[] = "z:\\sys\\bin\\ipcchild"; -00066 pid_t fifoChildPid; -00068 int fifoRetVal; -00069 int unlinkResult; -00070 int fifoResult; -00072 int childProcessFD; -00073 -00074 char **argv=(char**)malloc(2*sizeof(char*)); -00075 argv[0]=(char*)malloc(50*sizeof(char)); -00076 argv[1] = 0; -00077 strcpy(argv[0], fifoExecFileName); -00078 -00082 unlinkResult=unlink(fifoFileName); -00083 fifoResult = mkfifo(fifoFileName,S_IXGRP); -00085 if(fifoResult == -1) -00086 { -00087 Error("*** failure mkfifo ***"); -00088 PressKey(); -00089 return EXIT_FAILURE; -00090 } -00092 fifoRetVal = posix_spawn(&fifoChildPid, fifoExecFileName, NULL, NULL, argv, (char**)NULL); -00094 free((void*)argv[0]); -00095 free((void*)argv); -00096 if(fifoRetVal != 0) -00097 { -00098 printf("failure posix_spawn [Error NUMBER = %d]\n",errno); -00099 unlinkResult=unlink(fifoFileName); -00100 if(unlinkResult!=0) -00101 { -00102 printf("failure posix_spawn [Error NUMBER = %d]\n",errno); -00103 } -00104 PressKey(); -00105 return EXIT_FAILURE; -00106 } -00107 else -00108 { -00110 int fifoFd = open(fifoFileName,O_RDONLY); -00112 if(fifoFd == -1) -00113 { -00115 Error("*** failure FIFO Open ***"); -00116 PressKey(); -00117 return EXIT_FAILURE; -00118 } -00119 else -00120 { -00122 char buffer[100]; -00123 int nbytes; -00124 memset(buffer,0,sizeof(buffer)); -00126 nbytes = read(fifoFd,buffer,sizeof(buffer)); -00127 printf("\nBytes Received=%d, Message Received from fifochild using [FIFO]=%s",nbytes,buffer); -00129 (void)close(fifoFd); -00130 } -00132 childProcessStream = popen(popenExecFileName,"r"); -00134 if(childProcessStream == NULL) -00135 { -00136 Error("\n Failure to create child process with popen()"); -00137 PressKey(); -00138 return EXIT_FAILURE; -00139 } -00140 else -00141 { -00143 char buffer[100]; -00145 int nbytes; -00147 childProcessFD = fileno(childProcessStream); -00148 memset(buffer,0,sizeof(buffer)); -00149 printf("\n\nWaiting for message from Child[popen()]\n"); -00151 nbytes = read(childProcessFD,buffer,sizeof(buffer)); -00152 printf("Bytes Received=%d, Message Received from ipcchild using[popen()]=%s\n[ok]\n",nbytes,buffer); -00154 pclose(childProcessStream); -00155 } -00157 (void)waitpid(fifoChildPid,NULL,0); -00159 unlinkResult=unlink(fifoFileName); -00160 if(unlinkResult!=0) -00161 { -00162 Error("Unlink error"); -00163 } -00164 } -00165 printf("Press any key to exit..."); -00166 PressKey(); -00167 return EXIT_SUCCESS; -00168 } -