Perl-AfterFork

 view release on metacpan or  search on metacpan

AfterFork.xs  view on Meta::CPAN

#   include <sys/types.h>
#   include <sys/syscall.h>
#   include <unistd.h>
# endif

MODULE = Perl::AfterFork		PACKAGE = Perl::AfterFork

void
reinit_pid()
  PROTOTYPE:
  PPCODE:
    {
      GV *tmpgv;
      if ((tmpgv = gv_fetchpv("$", TRUE, SVt_PV))) {
	SvREADONLY_off(GvSV(tmpgv));
# ifdef HAS_SYSCALL
	sv_setiv(GvSV(tmpgv), (IV)syscall(SYS_getpid));
# else
	sv_setiv(GvSV(tmpgv), (IV)getpid());
# endif
	SvREADONLY_on(GvSV(tmpgv));
	XSRETURN_YES;
      } else {
	XSRETURN_NO;
      }
    }

void
reinit_ppid()
  PROTOTYPE:
  PPCODE:
    {
      PL_ppid = (IV)getppid();
      XSRETURN_YES;
    }

void
reinit_pidstatus()
  PROTOTYPE:
  PPCODE:
    {
      hv_clear(PL_pidstatus);	/* no kids, so don't wait for 'em */
      XSRETURN_YES;
    }

void
reinit()
  PROTOTYPE:
  PPCODE:
    {
      GV *tmpgv;

      PL_ppid = (IV)getppid();
      hv_clear(PL_pidstatus);	/* no kids, so don't wait for 'em */

      if ((tmpgv = gv_fetchpv("$", TRUE, SVt_PV))) {
	SvREADONLY_off(GvSV(tmpgv));
# ifdef HAS_SYSCALL
	sv_setiv(GvSV(tmpgv), (IV)syscall(SYS_getpid));



( run in 1.951 second using v1.01-cache-2.11-cpan-5511b514fd6 )