[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00951] Re: ツリーで移動中にSEGV



 しらいです。

In Message-Id <20120311082834.B02094806A6@yuka.unixusers.net>
        Takashi SHIRAI <shirai@unixusers.net>writes:
>  しらいです。

> > 1.tcsetpgrp() が freeze する。
> > 2.子 process に制御端末を渡せない。
> 
>  この二つですが、実は tcsetpgrp() は正常に機能していました。
> ioctl() で TIOCSPGRP request を使っていたのがまずかったよう
> で、tcsetpgrp() に置換えたら動きました。

 こちらの patch も一応挙げておきます。Cygwin 以外でも必要に
応じて選択出来るように識別子を用意したので、POSIX は全てこの
実装にした方が良いかも知れません。
 ただ、確か HP-UX が bug 付の tcsetpgrp() を持ってた筈なの
で、当面は ioctl() の方を既定値にしておきます。

---- Cut Here ----
diff -ur ../old/FD-3.00j/machine.h ./machine.h
--- ../old/FD-3.00j/machine.h	Sat Sep 25 00:00:00 2010
+++ ./machine.h	Sun Mar 11 16:32:45 2012
@@ -517,10 +517,11 @@
 #define	USESETENV
 #define	USEMKTIME
 #define	DEFFDSETSIZE
+#define	USETCGETPGRP
 #define	SIGFNCINT
 #define	USESOCKLEN
 #define	USEINETATON
-#define	WAITKEYPAD		36
+#define	WAITKEYPAD		720
 #endif
 
 #if	defined (linux)
@@ -1023,6 +1024,7 @@
 /* #define USETIMES	;use times() for getting process time */
 /* #define GETPGRPVOID	;getpgrp() needs void argument */
 /* #define USESETPGID	;use setpgid() instead of setpgrp() */
+/* #define USETCGETPGRP	;use tcgetpgrp()/tcsetpgrp() instead of ioctl() */
 /* #define USESETVBUF	;use setvbuf() instead of setbuf() or setlinebuf() */
 /* #define SIGARGINT	;the 2nd argument function of signal() returns int */
 /* #define SIGFNCINT	;the 2nd argument function of signal() needs int */
diff -ur ../old/FD-3.00j/system.h ./system.h
--- ../old/FD-3.00j/system.h	Sat Sep 25 00:00:00 2010
+++ ./system.h	Sun Mar 11 16:40:54 2012
@@ -94,13 +94,13 @@
 #define	ENVCOMSPEC		"COMSPEC"
 #define	ENVREPLY		"REPLY"
 
-#ifdef	TIOCGPGRP
+#if	defined (TIOCGPGRP) && !defined (USETCGETPGRP)
 #define	gettcpgrp(f,g)		((ioctl(f, TIOCGPGRP, g) < 0) \
 				? (*(g) = (p_id_t)-1) : *(g))
 #else
 #define	gettcpgrp(f,g)		(*(g) = tcgetpgrp(f))
 #endif
-#ifdef	TIOCSPGRP
+#if	defined (TIOCSPGRP) && !defined (USETCGETPGRP)
 #define	settcpgrp(f,g)		ioctl(f, TIOCSPGRP, &(g))
 #else
 #define	settcpgrp		tcsetpgrp
---- Cut Here ----

                                               しらい たかし