ObjFW  Check-in [87b1318a27]

Overview
Comment:OFProcess: Use vfork() instead of fork()
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 87b1318a2765a47df68959e8a721427d868f8d458a51448f1827b15cc60542a0
User & Date: js on 2015-08-09 14:59:56
Other Links: manifest | tags
Context
2015-08-09
15:00
configure.ac: Fix small typo check-in: ba9718061e user: js tags: trunk
14:59
OFProcess: Use vfork() instead of fork() check-in: 87b1318a27 user: js tags: trunk
14:59
PLATFORMS.md: Add OS X El Capitan check-in: 16db923d91 user: js tags: trunk
Changes

Modified configure.ac from [9383b47e78] to [0bf6613428].

932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
	*-*-mingw*)
		have_processes="yes"
		;;
	*-*-msdosdjgpp*)
		have_processes="no"
		;;
	*)
		AC_CHECK_FUNCS([fork dup2 execvp kill _exit], [
			AS_IF([test x"$ac_cv_func_fork" = x"yes" \
			    -a x"$ac_cv_func_pipe" = x"yes" \
			    -a x"$ac_cv_func_dup2" = x"yes" \
			    -a x"$ac_cv_func_execvp" = x"yes" \
			    -a x"$ac_cv_func_kill" = x"yes" \
			    -a x"$ac_cv_func__exit" = x"yes"], [
				have_processes="yes"
			])







|
|







932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
	*-*-mingw*)
		have_processes="yes"
		;;
	*-*-msdosdjgpp*)
		have_processes="no"
		;;
	*)
		AC_CHECK_FUNCS([vfork dup2 execvp kill _exit], [
			AS_IF([test x"$ac_cv_func_vfork" = x"yes" \
			    -a x"$ac_cv_func_pipe" = x"yes" \
			    -a x"$ac_cv_func_dup2" = x"yes" \
			    -a x"$ac_cv_func_execvp" = x"yes" \
			    -a x"$ac_cv_func_kill" = x"yes" \
			    -a x"$ac_cv_func__exit" = x"yes"], [
				have_processes="yes"
			])

Modified src/OFProcess.m from [5b951c5966] to [30416b7510].

195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
					@throw [OFInitializationFailedException
					    exceptionWithClass: [self class]];
			} @finally {
				posix_spawn_file_actions_destroy(&actions);
				posix_spawnattr_destroy(&attr);
			}
# else
			if ((_pid = fork()) == 0) {
				environ = env;

				close(_readPipe[0]);
				close(_writePipe[1]);
				dup2(_writePipe[0], 0);
				dup2(_readPipe[1], 1);
				execvp(path, argv);







|







195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
					@throw [OFInitializationFailedException
					    exceptionWithClass: [self class]];
			} @finally {
				posix_spawn_file_actions_destroy(&actions);
				posix_spawnattr_destroy(&attr);
			}
# else
			if ((_pid = vfork()) == 0) {
				environ = env;

				close(_readPipe[0]);
				close(_writePipe[1]);
				dup2(_writePipe[0], 0);
				dup2(_readPipe[1], 1);
				execvp(path, argv);