!396 修复signal中的关于pipe部分的用例问题
Merge pull request !396 from phchang/fix_pipebug
This commit is contained in:
commit
78a50aff99
|
@ -46,7 +46,7 @@ static UINT32 Testcase(VOID)
|
||||||
ret = pipe(pipeFd[i]);
|
ret = pipe(pipeFd[i]);
|
||||||
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT);
|
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT);
|
||||||
fdmax = pipeFd[i][1] > fdmax ? pipeFd[i][1] : fdmax;
|
fdmax = pipeFd[i][1] > fdmax ? pipeFd[i][1] : fdmax;
|
||||||
ret = write(pipeFd[i][1], "hello world", TAR_STR_LEN);
|
ret = write(pipeFd[i][1], "aloha world", TAR_STR_LEN);
|
||||||
printf("write first status: %d\n", ret);
|
printf("write first status: %d\n", ret);
|
||||||
ICUNIT_GOTO_EQUAL(ret, TAR_STR_LEN, ret, EXIT);
|
ICUNIT_GOTO_EQUAL(ret, TAR_STR_LEN, ret, EXIT);
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@ static UINT32 Testcase(VOID)
|
||||||
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT);
|
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT);
|
||||||
fdmax = pipeFd[i][1] > fdmax ? pipeFd[i][1] : fdmax;
|
fdmax = pipeFd[i][1] > fdmax ? pipeFd[i][1] : fdmax;
|
||||||
fdmax = pipeFd[i][0] > fdmax ? pipeFd[i][0] : fdmax;
|
fdmax = pipeFd[i][0] > fdmax ? pipeFd[i][0] : fdmax;
|
||||||
ret = write(pipeFd[i][1], "hello world", TAR_STR_LEN);
|
ret = write(pipeFd[i][1], "Aloha World", TAR_STR_LEN);
|
||||||
printf("write first status: %d\n", ret);
|
printf("write first status: %d\n", ret);
|
||||||
ICUNIT_GOTO_EQUAL(ret, TAR_STR_LEN, ret, EXIT);
|
ICUNIT_GOTO_EQUAL(ret, TAR_STR_LEN, ret, EXIT);
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ static UINT32 Testcase(VOID)
|
||||||
ret = pipe(pipeFd[i]);
|
ret = pipe(pipeFd[i]);
|
||||||
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT);
|
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT);
|
||||||
fdmax = pipeFd[i][1] > fdmax ? pipeFd[i][1] : fdmax;
|
fdmax = pipeFd[i][1] > fdmax ? pipeFd[i][1] : fdmax;
|
||||||
ret = write(pipeFd[i][1], "hello world", TAR_STR_LEN);
|
ret = write(pipeFd[i][1], "Aloha world", TAR_STR_LEN);
|
||||||
printf("write first status: %d\n", ret);
|
printf("write first status: %d\n", ret);
|
||||||
ICUNIT_GOTO_EQUAL(ret, TAR_STR_LEN, ret, EXIT);
|
ICUNIT_GOTO_EQUAL(ret, TAR_STR_LEN, ret, EXIT);
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,28 +29,41 @@
|
||||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
#include "it_test_signal.h"
|
#include "it_test_signal.h"
|
||||||
|
#include "sys/shm.h"
|
||||||
|
|
||||||
static UINT32 Testcase(VOID)
|
static UINT32 Testcase(VOID)
|
||||||
{
|
{
|
||||||
int pipeFd[2], ret, spid; // 2, pipe return 2 file descripter
|
int pipeFd[2], ret, spid; // 2, pipe return 2 file descripter
|
||||||
char buffer[20]; // 20, target buffer size
|
char buffer[20]; // 20, target buffer size
|
||||||
|
int *sharedflag = NULL;
|
||||||
|
int shmid;
|
||||||
|
|
||||||
ret = pipe(pipeFd);
|
ret = pipe(pipeFd);
|
||||||
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT1);
|
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT1);
|
||||||
|
shmid = shmget((key_t)IPC_PRIVATE, sizeof(int), 0666 | IPC_CREAT); // 0666 the authority of the shm
|
||||||
|
ICUNIT_ASSERT_NOT_EQUAL(shmid, -1, shmid);
|
||||||
|
sharedflag = (int *)shmat(shmid, NULL, 0);
|
||||||
|
*sharedflag = 0;
|
||||||
|
|
||||||
spid = fork();
|
spid = fork();
|
||||||
ICUNIT_GOTO_NOT_EQUAL(spid, -1, spid, EXIT1);
|
ICUNIT_GOTO_NOT_EQUAL(spid, -1, spid, EXIT1);
|
||||||
if (spid == 0) {
|
if (spid == 0) {
|
||||||
|
sharedflag = (int *)shmat(shmid, NULL, 0);
|
||||||
close(pipeFd[0]);
|
close(pipeFd[0]);
|
||||||
sleep(10); // 10, sleep 10 second.
|
|
||||||
ret = write(pipeFd[1], "hello world", 12); // 12, "hello world" length and '\0'
|
ret = write(pipeFd[1], "hello world", 12); // 12, "hello world" length and '\0'
|
||||||
printf("write first status: %d\n", ret);
|
printf("write first status: %d\n", ret);
|
||||||
if (ret != 12) { // 12, "hello world" length and '\0'
|
if (ret != 12) { // 12, "hello world" length and '\0'
|
||||||
exit(11); // 11, the value of son process unexpect exit, convenient to debug
|
exit(11); // 11, the value of son process unexpect exit, convenient to debug
|
||||||
}
|
}
|
||||||
|
*sharedflag = 1;
|
||||||
close(pipeFd[1]);
|
close(pipeFd[1]);
|
||||||
exit(RED_FLAG);
|
exit(RED_FLAG);
|
||||||
}
|
}
|
||||||
close(pipeFd[1]);
|
close(pipeFd[1]);
|
||||||
|
// waitting for the sub process has written the sentence
|
||||||
|
while (*sharedflag != 1) {
|
||||||
|
usleep(1);
|
||||||
|
}
|
||||||
ret = read(pipeFd[0], buffer, 12); // 12, "hello world" length and '\0'
|
ret = read(pipeFd[0], buffer, 12); // 12, "hello world" length and '\0'
|
||||||
ICUNIT_GOTO_EQUAL(ret, 12, ret, EXIT); // 12, "hello world" length and '\0'
|
ICUNIT_GOTO_EQUAL(ret, 12, ret, EXIT); // 12, "hello world" length and '\0'
|
||||||
ret = strcmp(buffer, "hello world");
|
ret = strcmp(buffer, "hello world");
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
#include "it_test_signal.h"
|
#include "it_test_signal.h"
|
||||||
|
#include "sys/shm.h"
|
||||||
|
|
||||||
static const int TAR_STR_LEN = 12;
|
static const int TAR_STR_LEN = 12;
|
||||||
|
|
||||||
|
@ -37,25 +37,38 @@ static UINT32 Testcase(VOID)
|
||||||
{
|
{
|
||||||
int pipeFd[2], ret, spid; // 2, pipe return 2 file descripter
|
int pipeFd[2], ret, spid; // 2, pipe return 2 file descripter
|
||||||
char buffer[20]; // 20, target buffer size
|
char buffer[20]; // 20, target buffer size
|
||||||
|
int *sharedflag = NULL;
|
||||||
|
int shmid;
|
||||||
|
|
||||||
ret = pipe(pipeFd);
|
ret = pipe(pipeFd);
|
||||||
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT1);
|
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT1);
|
||||||
|
shmid = shmget((key_t)IPC_PRIVATE, sizeof(int), 0666 | IPC_CREAT); // 0666 the authority of the shm
|
||||||
|
ICUNIT_ASSERT_NOT_EQUAL(shmid, -1, shmid);
|
||||||
|
sharedflag = (int *)shmat(shmid, NULL, 0);
|
||||||
|
*sharedflag = 0;
|
||||||
|
|
||||||
spid = fork();
|
spid = fork();
|
||||||
ICUNIT_GOTO_NOT_EQUAL(spid, -1, spid, EXIT1);
|
ICUNIT_GOTO_NOT_EQUAL(spid, -1, spid, EXIT1);
|
||||||
if (spid == 0) {
|
if (spid == 0) {
|
||||||
|
sharedflag = (int *)shmat(shmid, NULL, 0);
|
||||||
close(pipeFd[0]);
|
close(pipeFd[0]);
|
||||||
ret = write(pipeFd[1], "hello world", TAR_STR_LEN);
|
ret = write(pipeFd[1], "Hello world", TAR_STR_LEN);
|
||||||
printf("write first status: %d\n", ret);
|
printf("write first status: %d\n", ret);
|
||||||
if (ret != TAR_STR_LEN) {
|
if (ret != TAR_STR_LEN) {
|
||||||
exit(11); // 11, the value of son process unexpect exit, convenient to debug
|
exit(11); // 11, the value of son process unexpect exit, convenient to debug
|
||||||
}
|
}
|
||||||
|
*sharedflag = 1;
|
||||||
close(pipeFd[1]);
|
close(pipeFd[1]);
|
||||||
exit(RED_FLAG);
|
exit(RED_FLAG);
|
||||||
}
|
}
|
||||||
close(pipeFd[1]);
|
close(pipeFd[1]);
|
||||||
sleep(2); // 2, sleep 2 second
|
// waitting for the sub process has written the sentence
|
||||||
|
while (*sharedflag != 1) {
|
||||||
|
usleep(1);
|
||||||
|
}
|
||||||
ret = read(pipeFd[0], buffer, TAR_STR_LEN);
|
ret = read(pipeFd[0], buffer, TAR_STR_LEN);
|
||||||
ICUNIT_GOTO_EQUAL(ret, TAR_STR_LEN, ret, EXIT);
|
ICUNIT_GOTO_EQUAL(ret, TAR_STR_LEN, ret, EXIT);
|
||||||
ret = strcmp(buffer, "hello world");
|
ret = strcmp(buffer, "Hello world");
|
||||||
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT);
|
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT);
|
||||||
printf("read pipe success: %s\n", buffer);
|
printf("read pipe success: %s\n", buffer);
|
||||||
wait(&ret);
|
wait(&ret);
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
#include "sys/shm.h"
|
||||||
#include "it_test_signal.h"
|
#include "it_test_signal.h"
|
||||||
#include "signal.h"
|
#include "signal.h"
|
||||||
|
|
||||||
|
@ -41,58 +42,59 @@ static int PipecommonWrite()
|
||||||
int pipefd[2]; // 2, array subscript
|
int pipefd[2]; // 2, array subscript
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
int retValue = -1;
|
int retValue = -1;
|
||||||
retValue = pipe(pipefd);
|
int *sharedflag = NULL;
|
||||||
ICUNIT_ASSERT_EQUAL(retValue, 0, retValue);
|
int shmid;
|
||||||
|
|
||||||
signal(SIGPIPE, SigPrint);
|
|
||||||
|
|
||||||
int *readFd = &pipefd[0];
|
int *readFd = &pipefd[0];
|
||||||
int *writeFd = &pipefd[1];
|
int *writeFd = &pipefd[1];
|
||||||
|
|
||||||
char sentence[] = "Hello World";
|
char sentence[] = "Hello World";
|
||||||
char readbuffer[100];
|
char readbuffer[100];
|
||||||
int status, ret;
|
int status, ret;
|
||||||
|
|
||||||
|
retValue = pipe(pipefd);
|
||||||
|
ICUNIT_ASSERT_EQUAL(retValue, 0, retValue);
|
||||||
|
if (signal(SIGPIPE, SigPrint) == SIG_ERR) {
|
||||||
|
printf("signal error\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
shmid = shmget((key_t)IPC_PRIVATE, sizeof(int), 0666 | IPC_CREAT); // 0666 the authority of the shm
|
||||||
|
ICUNIT_ASSERT_NOT_EQUAL(shmid, -1, shmid);
|
||||||
|
sharedflag = (int *)shmat(shmid, NULL, 0);
|
||||||
|
*sharedflag = 0;
|
||||||
|
|
||||||
pid = fork();
|
pid = fork();
|
||||||
if (pid == -1) {
|
if (pid == -1) {
|
||||||
printf("Fork Error!\n");
|
printf("Fork Error!\n");
|
||||||
return -1;
|
return -1;
|
||||||
} else if (pid == 0) {
|
} else if (pid == 0) {
|
||||||
for (int i = 0; i < 3; i++) { // 3, Number of cycles
|
sharedflag = (int *)shmat(shmid, NULL, 0);
|
||||||
close(*readFd);
|
close(*readFd);
|
||||||
retValue = write(*writeFd, sentence, strlen(sentence) + 1);
|
retValue = write(*writeFd, sentence, strlen(sentence) + 1);
|
||||||
|
ICUNIT_ASSERT_EQUAL(retValue, strlen(sentence) + 1, retValue);
|
||||||
if (i == 0) {
|
*sharedflag = 1;
|
||||||
if (retValue != strlen(sentence) + 1) {
|
// 2 waitting for the father process close the pipe's read port
|
||||||
exit(retValue);
|
while (*sharedflag != 2) {
|
||||||
}
|
usleep(1);
|
||||||
} else {
|
|
||||||
if (retValue != -1) {
|
|
||||||
exit(retValue);
|
|
||||||
}
|
|
||||||
if (errno != EPIPE) {
|
|
||||||
exit(errno);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
usleep(150000); // 150000, Used to calculate the delay time.
|
|
||||||
}
|
}
|
||||||
|
retValue = write(*writeFd, sentence, strlen(sentence) + 1);
|
||||||
|
ICUNIT_ASSERT_EQUAL(retValue, -1, retValue);
|
||||||
|
ICUNIT_ASSERT_EQUAL(errno, EPIPE, errno);
|
||||||
exit(0);
|
exit(0);
|
||||||
} else {
|
} else {
|
||||||
usleep(10000); // 10000, Used to calculate the delay time.
|
close(*writeFd);
|
||||||
for (int i = 0; i < 3; i++) { // 3, Number of cycles
|
// 1 waitting for the sub process has written the sentence first
|
||||||
close(*readFd);
|
while (*sharedflag != 1) {
|
||||||
|
usleep(1);
|
||||||
}
|
}
|
||||||
|
close(*readFd);
|
||||||
|
// 2 father process close the pipe's read port
|
||||||
|
*sharedflag = 2;
|
||||||
ret = waitpid(pid, &status, 0);
|
ret = waitpid(pid, &status, 0);
|
||||||
ICUNIT_ASSERT_EQUAL(ret, pid, ret);
|
ICUNIT_ASSERT_EQUAL(ret, pid, ret);
|
||||||
ICUNIT_ASSERT_EQUAL(WEXITSTATUS(status), 0, WEXITSTATUS(status));
|
ICUNIT_ASSERT_EQUAL(WEXITSTATUS(status), 0, WEXITSTATUS(status));
|
||||||
}
|
}
|
||||||
|
|
||||||
close(*readFd);
|
|
||||||
close(*writeFd);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ItPosixPipe005(void)
|
void ItPosixPipe005(void)
|
||||||
{
|
{
|
||||||
TEST_ADD_CASE(__FUNCTION__, PipecommonWrite, TEST_POSIX, TEST_MEM, TEST_LEVEL0, TEST_FUNCTION);
|
TEST_ADD_CASE(__FUNCTION__, PipecommonWrite, TEST_POSIX, TEST_MEM, TEST_LEVEL0, TEST_FUNCTION);
|
||||||
|
|
|
@ -627,6 +627,17 @@ HWTEST_F(SignalTest, ItPosixPipe003, TestSize.Level0)
|
||||||
ItPosixPipe003();
|
ItPosixPipe003();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* *
|
||||||
|
* @tc.name: ItPosixPipe004
|
||||||
|
* @tc.desc: function for SignalTest
|
||||||
|
* @tc.type: FUNC
|
||||||
|
* @tc.require: AR000EEMQ9
|
||||||
|
*/
|
||||||
|
HWTEST_F(SignalTest, ItPosixPipe004, TestSize.Level0)
|
||||||
|
{
|
||||||
|
ItPosixPipe004();
|
||||||
|
}
|
||||||
|
|
||||||
/* *
|
/* *
|
||||||
* @tc.name: ItPosixPipe005
|
* @tc.name: ItPosixPipe005
|
||||||
* @tc.desc: function for SignalTest
|
* @tc.desc: function for SignalTest
|
||||||
|
|
|
@ -39,7 +39,7 @@ static UINT32 Testcase(VOID)
|
||||||
fd_set reads;
|
fd_set reads;
|
||||||
ret = pipe(pipeFd);
|
ret = pipe(pipeFd);
|
||||||
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT);
|
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT);
|
||||||
ret = write(pipeFd[1], "hello world", TAR_STR_LEN);
|
ret = write(pipeFd[1], "Hello World", TAR_STR_LEN);
|
||||||
printf("write first status: %d\n", ret);
|
printf("write first status: %d\n", ret);
|
||||||
ICUNIT_GOTO_EQUAL(ret, TAR_STR_LEN, ret, EXIT);
|
ICUNIT_GOTO_EQUAL(ret, TAR_STR_LEN, ret, EXIT);
|
||||||
FD_ZERO(&reads);
|
FD_ZERO(&reads);
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "it_test_signal.h"
|
#include "it_test_signal.h"
|
||||||
#include "signal.h"
|
#include "signal.h"
|
||||||
#include "fcntl.h"
|
#include "fcntl.h"
|
||||||
|
#include "sys/shm.h"
|
||||||
|
|
||||||
static int TestPipeMultiProcess()
|
static int TestPipeMultiProcess()
|
||||||
{
|
{
|
||||||
|
@ -42,46 +43,62 @@ static int TestPipeMultiProcess()
|
||||||
|
|
||||||
int *readFd = &pipefd[0];
|
int *readFd = &pipefd[0];
|
||||||
int *writeFd = &pipefd[1];
|
int *writeFd = &pipefd[1];
|
||||||
|
char readbuffer[100] = {0};
|
||||||
char readbuffer[100];
|
|
||||||
int status, ret;
|
int status, ret;
|
||||||
int totalNum = 3;
|
int totalNum = 3;
|
||||||
|
int *sharedflag = NULL;
|
||||||
|
int shmid;
|
||||||
|
|
||||||
int flag = fcntl(*readFd, F_GETFL);
|
int flag = fcntl(*readFd, F_GETFL);
|
||||||
fcntl(*readFd, F_SETFL, flag | O_NONBLOCK);
|
fcntl(*readFd, F_SETFL, flag | O_NONBLOCK);
|
||||||
|
shmid = shmget((key_t)IPC_PRIVATE, sizeof(int), 0666 | IPC_CREAT); // 0666 the authority of the shm
|
||||||
|
ICUNIT_ASSERT_NOT_EQUAL(shmid, -1, shmid);
|
||||||
|
sharedflag = (int *)shmat(shmid, NULL, 0);
|
||||||
|
*sharedflag = 0;
|
||||||
|
|
||||||
pid = fork();
|
pid = fork();
|
||||||
if (pid == -1) {
|
if (pid == -1) {
|
||||||
printf("Fork Error!\n");
|
printf("Fork Error!\n");
|
||||||
return -1;
|
return -1;
|
||||||
} else if (pid == 0) {
|
} else if (pid == 0) {
|
||||||
|
sharedflag = (int *)shmat(shmid, NULL, 0);
|
||||||
|
close(pipefd[0]);
|
||||||
for (int i = 0; i < totalNum; i++) {
|
for (int i = 0; i < totalNum; i++) {
|
||||||
errno = 0;
|
errno = 0;
|
||||||
char sentence1[15] = "Hello World";
|
char sentence1[15] = "Hello World";
|
||||||
char a[4] = {0};
|
char a[2] = {0};
|
||||||
sprintf(a, "%d", i);
|
sprintf(a, "%d", i);
|
||||||
strcat(sentence1, a);
|
strcat(sentence1, a);
|
||||||
int ret = write(*writeFd, sentence1, strlen(sentence1) + 1);
|
int ret = write(*writeFd, sentence1, strlen(sentence1) + 1);
|
||||||
|
ICUNIT_ASSERT_EQUAL(ret, strlen(sentence1) + 1, ret);
|
||||||
usleep(10000); // 10000, Used to calculate the delay time.
|
usleep(10000); // 10000, Used to calculate the delay time.
|
||||||
}
|
}
|
||||||
|
*sharedflag = 1;
|
||||||
|
ret = close(pipefd[1]);
|
||||||
|
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
|
||||||
exit(0);
|
exit(0);
|
||||||
} else {
|
} else {
|
||||||
|
close(pipefd[1]);
|
||||||
|
// waitting for the sub process has written the sentence first
|
||||||
|
while (*sharedflag != 1) {
|
||||||
|
usleep(1);
|
||||||
|
}
|
||||||
for (int i = 0; i < totalNum; i++) {
|
for (int i = 0; i < totalNum; i++) {
|
||||||
printf("read\n");
|
printf("read\n");
|
||||||
char sentence1[15] = "Hello World";
|
char sentence1[15] = "Hello World";
|
||||||
char a[4] = {0};
|
char a[2] = {0};
|
||||||
|
sprintf(a, "%d", i);
|
||||||
|
strcat(sentence1, a);
|
||||||
memset(readbuffer, 0, sizeof(readbuffer));
|
memset(readbuffer, 0, sizeof(readbuffer));
|
||||||
retValue = read(*readFd, readbuffer, sizeof(readbuffer));
|
retValue = read(*readFd, readbuffer, strlen(sentence1) + 1);
|
||||||
printf("Receive %d bytes data : %s,%d\n", retValue, readbuffer, errno);
|
printf("Receive %d bytes data : %s, errno : %d\n", retValue, readbuffer, errno);
|
||||||
ICUNIT_ASSERT_SIZE_STRING_EQUAL(readbuffer, readbuffer, strlen(sentence1), errno);
|
ICUNIT_ASSERT_SIZE_STRING_EQUAL(readbuffer, sentence1, strlen(sentence1), errno);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret = waitpid(pid, &status, 0);
|
ret = waitpid(pid, &status, 0);
|
||||||
ICUNIT_ASSERT_EQUAL(ret, pid, ret);
|
ICUNIT_ASSERT_EQUAL(ret, pid, ret);
|
||||||
ret = close(pipefd[0]);
|
ret = close(pipefd[0]);
|
||||||
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
|
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
|
||||||
ret = close(pipefd[1]);
|
|
||||||
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue