---
name: "posix_spawnattr_setbinpref_np"
section: "3"
platform: "macos"
package: "xnu"
version: "12377.121.6"
release: "macOS 26.5"
platforms: ["macos"]
url: "https://new.carta.tech/posix_spawnattr_setbinpref_np"
---

# posix\_spawnattr\_setbinpref\_np(3)

set or get the spawn-binpref attribute on a posix\_spawnattr\_t

## NAME

**posix\_spawnattr\_setbinpref\_np** **posix\_spawnattr\_getbinpref\_np** – set or get the *spawn-binpref* attribute on a *posix\_spawnattr\_t*

## SYNOPSIS

**#include \<spawn.h\>**

*int*\

**posix\_spawnattr\_setbinpref\_np**(*posix\_spawnattr\_t \*restrict attr*, *size\_t count*, *cpu\_type\_t \*pref*, *size\_t \*restrict ocount*);

*int*\

**posix\_spawnattr\_getbinpref\_np**(*const posix\_spawnattr\_t \*restrict attr*, *size\_t count*, *cpu\_type\_t \*pref*, *size\_t \* restrict ocount*);

## IMPORTANT

These functions represent an Apple extension to [posix\_spawn(2)](/posix_spawn/2.md) and posix\_spawnp(2), and as such should not be used by programs intending their code to be portable to other platforms.

## DESCRIPTION

The **posix\_spawnattr\_setbinpref\_np**() function sets the universal binary preferences for the spawn attribute value referenced by *attr* from the memory containing the *cpu\_type\_t* referenced by  *pref* with a size of *count* elements; the actual number of elements that are set in the attribute is returned in *ocount*.

When spawn(2) or spawnp(2) is subsequently invoked on a Universal binary with the *posix\_spawnattr\_t*, the elements which were set will be used, in the order they were set, to select the first element in the list which matches any *cpu\_type\_t* of those available in the Universal binary, using the best slice matching that *cpu\_type\_t*. If there is no match, then the attempt to create the child process will fail with the error EBADARCH. If the *cpu\_type\_t* *CPU\_TYPE\_ANY* is the last element in the list, then rather than returning EBADARCH on no match, the system will instead fall back to the standard Universal binary grading preference order. If called multiple times on the same *attr*, the previous preferences will be overwritten.

The **posix\_spawnattr\_getbinpref\_np**() function gets the universal binary preferences for the spawn attribute value referenced by *attr* (set by a prior call to **posix\_spawnattr\_setbinpref\_np**() or **posix\_spawnattr\_setarchpref\_np**()) into the memory containing the *cpu\_type\_t* referenced by *pref* with a prereserved size of *count* elements; the actual number of elements that are copied from the attribute is returned in *ocount*.

## RETURN VALUES

On success, these functions return 0; on failure they return an error number from ⟨errno.h⟩ and modify the value of *ocount*. Additionally, if successful, **posix\_spawnattr\_getbinpref\_np**() will modify the contents of the *pref* array with the current attribute values.

## ERRORS

These functions may fail if:

- \[EINVAL\]

  The value specified by *attr* is invalid.

- \[EINVAL\]

  The value of *attr* is invalid.

## SEE ALSO

[posix\_spawn(2)](/posix_spawn/2.md), posix\_spawnp(2), [posix\_spawnattr\_init(3)](/posix_spawnattr_init/3.md), [posix\_spawnattr\_destroy(3)](/posix_spawnattr_destroy/3.md), [posix\_spawnattr\_setarchpref\_np(3)](/posix_spawnattr_setarchpref_np/3.md) [posix\_spawnattr\_setflags(3)](/posix_spawnattr_setflags/3.md)

## STANDARDS

Nonstandard

## HISTORY

The **posix\_spawnattr\_setbinpref\_np**() and **posix\_spawnattr\_getbinpref\_np**() function calls appeared in Mac OS X.
